MongoDB এবং JavaScript Integration

Database Tutorials - মঙ্গোডিবি (MongoDB)
177
177

MongoDB এবং JavaScript এর মধ্যে ইন্টিগ্রেশন খুবই গুরুত্বপূর্ণ, কারণ MongoDB JSON-এর মতো ডকুমেন্ট স্টোর ব্যবহার করে এবং JavaScript এর অ্যাসিনক্রোনাস প্রকৃতির কারণে MongoDB এর সাথে সহজেই কাজ করা যায়। MongoDB JavaScript এর সাথে সংযুক্ত হতে পারে Node.js ব্যবহার করে, যা MongoDB ডেটাবেসের সাথে যোগাযোগের জন্য একটি জনপ্রিয় এবং শক্তিশালী পরিবেশ।

এখানে MongoDB এবং JavaScript এর (বিশেষ করে Node.js) ইন্টিগ্রেশন সম্পর্কে আলোচনা করা হলো:


1. MongoDB এবং JavaScript Integration এর প্রাথমিক প্রস্তুতি

MongoDB এবং JavaScript এর মধ্যে সংযোগ স্থাপনের জন্য Node.js ব্যবহার করা হয়, কারণ এটি একটি JavaScript রানটাইম পরিবেশ যা সার্ভার সাইড অ্যাপ্লিকেশন তৈরি করতে ব্যবহৃত হয়।

Node.js ইনস্টল করা

প্রথমে, Node.js আপনার সিস্টেমে ইনস্টল থাকতে হবে। আপনি Node.js অফিসিয়াল ওয়েবসাইট থেকে এটি ডাউনলোড এবং ইনস্টল করতে পারেন: Node.js Official Site

MongoDB Node.js ড্রাইভার ইনস্টল করা

MongoDB ডেটাবেসে JavaScript (Node.js) এর মাধ্যমে কাজ করার জন্য, MongoDB এর অফিসিয়াল Node.js ড্রাইভার mongodb প্যাকেজটি ইনস্টল করতে হবে। আপনি npm ব্যবহার করে এটি ইনস্টল করতে পারেন:

npm install mongodb

2. MongoDB এবং JavaScript (Node.js) ব্যবহার করার জন্য কোড উদাহরণ

MongoDB সংযোগ স্থাপন

Node.js এবং MongoDB এর মধ্যে সংযোগ স্থাপনের জন্য প্রথমে mongodb প্যাকেজটি ব্যবহার করা হয়। নিচে একটি সাধারণ উদাহরণ দেওয়া হলো যেটি MongoDB সার্ভারে সংযোগ স্থাপন করে এবং একটি ডেটাবেসে কাজ করে।

const { MongoClient } = require("mongodb");

// MongoDB URL
const url = "mongodb://localhost:27017";  // অথবা MongoDB Atlas URL
const dbName = "testDB";

// MongoDB এ সংযোগ স্থাপন করা
MongoClient.connect(url, { useNewUrlParser: true, useUnifiedTopology: true })
  .then(client => {
    console.log("Connected to MongoDB");

    // ডেটাবেস নির্বাচন
    const db = client.db(dbName);

    // ডেটাবেসের একটি কালেকশন নির্বাচন
    const collection = db.collection("users");

    // কিছু ডেটা ইনসার্ট করা
    collection.insertOne({ name: "John Doe", age: 30 })
      .then(result => {
        console.log(`Inserted ${result.insertedCount} document`);
      })
      .catch(error => console.error(error));

    // MongoDB সংযোগ বন্ধ করা
    client.close();
  })
  .catch(error => console.error("Failed to connect to MongoDB", error));

এই কোডটি MongoDB এর testDB ডেটাবেসে users কালেকশনে একটি ডকুমেন্ট ইনসার্ট করে।


3. MongoDB এবং JavaScript দিয়ে ডেটা রিড/রাইট অপারেশন

ডেটা রিড (Find Operation)

MongoDB ডেটাবেস থেকে ডেটা পড়তে, find() মেথড ব্যবহার করা হয়। নিচে একটি উদাহরণ দেওয়া হলো যেখানে ডেটাবেস থেকে ডেটা পড়া হয়েছে:

MongoClient.connect(url, { useNewUrlParser: true, useUnifiedTopology: true })
  .then(client => {
    const db = client.db(dbName);
    const collection = db.collection("users");

    // MongoDB থেকে ডেটা রিড
    collection.find({ age: { $gte: 30 } }).toArray()
      .then(users => {
        console.log("Users found:", users);
      })
      .catch(error => console.error(error));

    client.close();
  })
  .catch(error => console.error("Failed to connect to MongoDB", error));

এই কোডটি age ফিল্ডে ৩০ বা তার বেশি বয়সের ব্যবহারকারীদের নির্বাচন করবে।

ডেটা আপডেট (Update Operation)

MongoDB তে ডেটা আপডেট করতে updateOne() বা updateMany() মেথড ব্যবহার করা হয়। উদাহরণস্বরূপ:

MongoClient.connect(url, { useNewUrlParser: true, useUnifiedTopology: true })
  .then(client => {
    const db = client.db(dbName);
    const collection = db.collection("users");

    // MongoDB ডেটা আপডেট
    collection.updateOne({ name: "John Doe" }, { $set: { age: 31 } })
      .then(result => {
        console.log(`${result.modifiedCount} document updated`);
      })
      .catch(error => console.error(error));

    client.close();
  })
  .catch(error => console.error("Failed to connect to MongoDB", error));

এটি "John Doe" নামক ব্যবহারকারীর বয়স আপডেট করবে।

ডেটা ডিলিট (Delete Operation)

MongoDB তে ডেটা মুছতে deleteOne() বা deleteMany() মেথড ব্যবহার করা হয়। উদাহরণ:

MongoClient.connect(url, { useNewUrlParser: true, useUnifiedTopology: true })
  .then(client => {
    const db = client.db(dbName);
    const collection = db.collection("users");

    // MongoDB ডেটা ডিলিট
    collection.deleteOne({ name: "John Doe" })
      .then(result => {
        console.log(`${result.deletedCount} document deleted`);
      })
      .catch(error => console.error(error));

    client.close();
  })
  .catch(error => console.error("Failed to connect to MongoDB", error));

এটি "John Doe" নামক ব্যবহারকারীকে ডিলিট করবে।


4. MongoDB এবং JavaScript (Node.js) তে Aggregation ব্যবহার

MongoDB তে aggregation হল ডেটার উপর জটিল অপারেশন চালানোর জন্য ব্যবহৃত একটি শক্তিশালী ফিচার। এটি ব্যবহারকারীদের ডেটার উপর বিভিন্ন ধরনের গাণিতিক, গ্রুপিং, ফিল্টারিং এবং অন্যান্য অপারেশন করতে সক্ষম করে। নিচে একটি সাধারণ অ্যাগ্রিগেশন উদাহরণ দেওয়া হলো:

MongoClient.connect(url, { useNewUrlParser: true, useUnifiedTopology: true })
  .then(client => {
    const db = client.db(dbName);
    const collection = db.collection("users");

    // MongoDB aggregation example
    collection.aggregate([
      { $match: { age: { $gte: 30 } } },
      { $group: { _id: "$age", total: { $sum: 1 } } }
    ])
      .toArray()
      .then(results => {
        console.log("Aggregation Results:", results);
      })
      .catch(error => console.error(error));

    client.close();
  })
  .catch(error => console.error("Failed to connect to MongoDB", error));

এটি age ফিল্ডে ৩০ বা তার বেশি বয়সের ব্যবহারকারীদের গ্রুপ করবে এবং তাদের মোট সংখ্যা নির্ধারণ করবে।


5. MongoDB Atlas এর সাথে JavaScript ইন্টিগ্রেশন

MongoDB Atlas হলো MongoDB এর ম্যানেজড ক্লাউড সার্ভিস যা MongoDB ডেটাবেস পরিচালনার জন্য অত্যন্ত সুবিধাজনক। JavaScript (Node.js) দিয়ে MongoDB Atlas এ সংযোগ করার জন্য নিচের কোডটি ব্যবহার করা হয়:

const { MongoClient } = require('mongodb');

const url = 'mongodb+srv://<username>:<password>@cluster0.mongodb.net/test?retryWrites=true&w=majority';
const dbName = 'myDatabase';

MongoClient.connect(url, { useNewUrlParser: true, useUnifiedTopology: true })
  .then(client => {
    const db = client.db(dbName);
    console.log('Connected to MongoDB Atlas');
    // Perform MongoDB operations here
    client.close();
  })
  .catch(error => console.error('Error connecting to MongoDB Atlas', error));

এই কোডটি MongoDB Atlas ক্লাস্টারে সংযোগ স্থাপন করবে এবং আপনি MongoDB ক্লাউডে ডেটা পরিচালনা করতে পারবেন।


সারাংশ

MongoDB এবং JavaScript (বিশেষ করে Node.js) এর ইন্টিগ্রেশন MongoDB ডেটাবেসের সাথে খুবই কার্যকরী। MongoDB Node.js ড্রাইভার এবং MongoDB Atlas ব্যবহার করে আপনি সহজেই MongoDB ডেটাবেসে ডেটা ইন্সার্ট, রিড, আপডেট এবং ডিলিট করতে পারেন। এছাড়াও, অ্যাগ্রিগেশন এবং অন্যান্য জটিল ডেটাবেস অপারেশন সহজেই JavaScript ব্যবহার করে MongoDB তে কার্যকরভাবে করা সম্ভব।

Content added By

MongoDB এবং Node.js Integration

160
160

MongoDB এবং Node.js একত্রে কাজ করতে সক্ষম এমন একটি শক্তিশালী টেকনোলজি কম্বিনেশন তৈরি করে। Node.js এর সাথে MongoDB ব্যবহারের জন্য MongoDB এর জন্য অফিসিয়াল Node.js ড্রাইভার Mongoose ব্যবহার করা হয়। Mongoose একটি ODM (Object Data Modeling) লাইব্রেরি যা MongoDB ডেটাবেসের সাথে সহজভাবে ইন্টারঅ্যাক্ট করতে সহায়তা করে এবং ডেটা মডেলিং, ভ্যালিডেশন, এবং কুয়েরি অপারেশনগুলোকে সহজ করে তোলে।

MongoDB এবং Node.js একত্রে ব্যবহারের জন্য mongoose লাইব্রেরি ব্যবহারের উপকারিতা হলো সহজ ডেটাবেস অপারেশন, স্কিমা ডিফাইনেশন, এবং অ্যাসিনক্রোনাস অপারেশনগুলোর সহজ ম্যানেজমেন্ট।


MongoDB এবং Node.js এর সাথে কাজ করার প্রক্রিয়া

এখানে MongoDB এবং Node.js এর সাথে কাজ করার জন্য প্রয়োজনীয় ধাপগুলো দেওয়া হল:

1. Node.js এবং MongoDB সেটআপ

প্রথমে Node.js এবং MongoDB ইনস্টল করতে হবে:

এছাড়া, Node.js প্রকল্পে MongoDB এর সাথে যোগাযোগ করতে mongoose লাইব্রেরি ব্যবহার করতে হবে।


2. Mongoose ইনস্টলেশন

Mongoose লাইব্রেরি MongoDB এর সাথে সহজে সংযোগ স্থাপন করতে ব্যবহৃত হয়। Mongoose ইনস্টল করতে:

npm install mongoose

3. MongoDB এর সাথে Node.js যুক্ত করা

এখন Node.js এর মাধ্যমে MongoDB ডেটাবেসে সংযোগ করার জন্য mongoose ব্যবহার করা হবে।

MongoDB সংযোগ কোড উদাহরণ
// mongoose লাইব্রেরি অন্তর্ভুক্ত করুন
const mongoose = require('mongoose');

// MongoDB এর URI দিয়ে সংযোগ করুন
mongoose.connect('mongodb://localhost:27017/mydatabase', { useNewUrlParser: true, useUnifiedTopology: true })
  .then(() => {
    console.log('MongoDB Connected Successfully');
  })
  .catch((err) => {
    console.log('MongoDB Connection Error: ', err);
  });

এখানে mongodb://localhost:27017/mydatabase হল MongoDB এর URI যেখানে mydatabase আপনার ডেটাবেসের নাম।


4. MongoDB মডেল তৈরি করা

Mongoose এর সাহায্যে MongoDB ডেটাবেসে ডকুমেন্টের স্ট্রাকচার (স্কিমা) তৈরি করা যায়। একটি মডেল তৈরি করতে, প্রথমে একটি স্কিমা তৈরি করতে হবে, তারপর সেই স্কিমা থেকে মডেল তৈরি করা হয়।

Mongoose Schema এবং Model উদাহরণ

// mongoose লাইব্রেরি অন্তর্ভুক্ত করুন
const mongoose = require('mongoose');

// Schema তৈরি করুন
const userSchema = new mongoose.Schema({
  name: {
    type: String,
    required: true
  },
  age: {
    type: Number,
    required: true
  },
  email: {
    type: String,
    required: true,
    unique: true
  }
});

// Model তৈরি করুন
const User = mongoose.model('User', userSchema);

// একটি ডকুমেন্ট ইনসার্ট করুন
const newUser = new User({
  name: 'John Doe',
  age: 30,
  email: 'johndoe@example.com'
});

newUser.save()
  .then(() => console.log('User added successfully'))
  .catch((err) => console.log('Error:', err));

এখানে userSchema একটি MongoDB ডকুমেন্টের স্ট্রাকচার নির্ধারণ করে এবং User মডেলটি সেই স্কিমার উপর ভিত্তি করে ডেটাবেসে ডকুমেন্ট ইনসার্ট, আপডেট বা রিট্রিভ করতে সহায়তা করে।


5. ডেটাবেসে কুয়েরি করা (Find, Update, Delete)

Mongoose এর মাধ্যমে MongoDB ডেটাবেসে বিভিন্ন কুয়েরি অপারেশন করা যায়, যেমন ডেটা খোঁজা, আপডেট করা বা মুছে ফেলা।

ডেটা খোঁজা (Find)

// একাধিক ডকুমেন্ট খোঁজা
User.find({ age: { $gte: 30 } })
  .then(users => console.log(users))
  .catch(err => console.log('Error:', err));

// একক ডকুমেন্ট খোঁজা
User.findOne({ email: 'johndoe@example.com' })
  .then(user => console.log(user))
  .catch(err => console.log('Error:', err));

ডেটা আপডেট করা (Update)

User.updateOne({ email: 'johndoe@example.com' }, { $set: { age: 31 } })
  .then(() => console.log('User updated successfully'))
  .catch(err => console.log('Error:', err));

ডেটা মুছে ফেলা (Delete)

User.deleteOne({ email: 'johndoe@example.com' })
  .then(() => console.log('User deleted successfully'))
  .catch(err => console.log('Error:', err));

6. MongoDB এবং Node.js এর মধ্যে সম্পর্কিত ফিচারসমূহ

  • কনেকশন পুলিং: Mongoose MongoDB সার্ভারের সাথে দীর্ঘমেয়াদী কনেকশন রাখে, যা একই সময়ের মধ্যে একাধিক কুয়েরি প্রসেস করতে সক্ষম হয়।
  • ডেটা ভ্যালিডেশন: Mongoose স্কিমার মাধ্যমে ডেটার ভ্যালিডেশন করতে পারে, যেমন ডেটার টাইপ যাচাই, বাধ্যতামূলক ক্ষেত্র এবং ইউনিক কনস্ট্রেইন্ট।
  • মিডলওয়ার: Mongoose মিডলওয়ার ব্যবহার করে, আপনি ডেটাবেস অপারেশনের আগে বা পরে কিছু কার্যক্রম সম্পন্ন করতে পারেন।
  • পপুলেটিং: Mongoose ডকুমেন্ট রিলেশনাল মডেল তৈরি করতে সহায়তা করে, যা আপনাকে ডেটা অন্যান্য ডকুমেন্ট থেকে সম্পর্কযুক্ত করতে দেয়।

7. MongoDB এবং Node.js এর ব্যবহার ক্ষেত্র

  • ওয়েব অ্যাপ্লিকেশন: MongoDB এবং Node.js সাধারণত ওয়েব অ্যাপ্লিকেশন ডেভেলপমেন্টে ব্যবহার হয়। যেমন, ব্যবহারকারী তথ্য সংরক্ষণ এবং পরিচালনা।
  • রিয়েল-টাইম অ্যাপ্লিকেশন: Node.js এর উচ্চ পারফরম্যান্স এবং MongoDB এর নমনীয় ডেটা মডেলিং রিয়েল-টাইম অ্যাপ্লিকেশন যেমন চ্যাট অ্যাপ্লিকেশন, লাইভ ডেটা স্ট্রিমিং সহ বিভিন্ন অ্যাপ্লিকেশন তৈরি করতে সহায়তা করে।
  • বড় ডেটা অ্যাপ্লিকেশন: MongoDB এবং Node.js এর সহযোগিতা বড় ডেটা অ্যাপ্লিকেশন যেমন IoT ডিভাইস থেকে ডেটা সংগ্রহ এবং বিশ্লেষণে সহায়তা করে।

সারাংশ

MongoDB এবং Node.js একত্রে ব্যবহৃত হলে একটি উচ্চ পারফরম্যান্স এবং স্কেলেবল অ্যাপ্লিকেশন তৈরি করা সম্ভব। Mongoose লাইব্রেরি ব্যবহার করে MongoDB ডেটাবেসের সাথে সহজে সংযোগ স্থাপন, ডেটা মডেলিং, কুয়েরি অপারেশন এবং ডেটাবেস পরিচালনা করা যায়। MongoDB এবং Node.js এর ইন্টিগ্রেশন ওয়েব অ্যাপ্লিকেশন, রিয়েল-টাইম অ্যাপ্লিকেশন এবং বড় ডেটা অ্যাপ্লিকেশনগুলির জন্য একটি শক্তিশালী সমাধান প্রদান করে।

Content added By

Mongoose ORM ব্যবহার করা

113
113

Mongoose হল MongoDB এর জন্য একটি জনপ্রিয় ORM (Object Relational Mapping) লাইব্রেরি, যা Node.js অ্যাপ্লিকেশনগুলিতে MongoDB এর সাথে সহজভাবে যোগাযোগ করার সুযোগ দেয়। Mongoose আপনাকে MongoDB ডেটাবেসের সাথে কাজ করতে সহজ, শক্তিশালী এবং নিরাপদ উপায় প্রদান করে, যেমন ডেটা মডেলিং, ভ্যালিডেশন, কোড প্রাকটিস, কাস্টম কুয়েরি ইত্যাদি।

Mongoose ব্যবহারের মাধ্যমে MongoDB ডেটাবেসের সাথে যোগাযোগকে আরও সিমপ্লিফাই করা যায়, এবং ডেটার কাঠামো এবং শর্তাবলী সহজভাবে পরিচালনা করা যায়।


Mongoose ORM ব্যবহার শুরু করা

১. Mongoose ইনস্টলেশন

প্রথমে আপনাকে Mongoose ইনস্টল করতে হবে। এটি Node.js এর জন্য একটি npm প্যাকেজ, এবং আপনি এটি npm ব্যবহার করে ইনস্টল করতে পারেন।

npm install mongoose

এটি ইনস্টল করার পর, আপনি এটি আপনার অ্যাপ্লিকেশনে ব্যবহার করতে পারবেন।

২. MongoDB এর সাথে সংযোগ স্থাপন

Mongoose ব্যবহার করতে প্রথমেই MongoDB এর সাথে সংযোগ স্থাপন করতে হবে। এই কাজটি mongoose.connect() ফাংশনের মাধ্যমে করা হয়।

সংযোগ উদাহরণ:

const mongoose = require('mongoose');

// MongoDB এর URI এবং কনফিগারেশন
mongoose.connect('mongodb://localhost:27017/mydatabase', {
  useNewUrlParser: true,
  useUnifiedTopology: true
})
.then(() => {
  console.log("MongoDB connected!");
})
.catch((err) => {
  console.error("Connection failed", err);
});

এখানে mydatabase হল MongoDB ডেটাবেসের নাম, এবং আপনি localhost বা MongoDB Atlas বা অন্য কোন ক্লাউড ডেটাবেস URI ব্যবহার করতে পারেন।


৩. Schema তৈরি এবং মডেল তৈরি করা

Mongoose তে Schema হলো ডেটার কাঠামো নির্ধারণকারী ব্লুপ্রিন্ট। Model হলো স্কিমা ভিত্তিক ডেটাবেসের মধ্যে ডকুমেন্ট তৈরি এবং পরিচালনা করার জন্য ব্যবহৃত ক্লাস।

  • Schema তৈরি: MongoDB ডেটাবেসে ডেটার কাঠামো (structure) নির্ধারণ করতে Schema তৈরি করা হয়।
  • Model তৈরি: একবার স্কিমা তৈরি হলে, আমরা মডেল তৈরি করি যা MongoDB ডেটাবেসের ডকুমেন্টে অপারেশন (CRUD) করার জন্য ব্যবহৃত হয়।

উদাহরণ:

const mongoose = require('mongoose');

// Schema তৈরি করা
const userSchema = new mongoose.Schema({
  name: { type: String, required: true },
  age: { type: Number, required: true },
  email: { type: String, required: true, unique: true }
});

// Model তৈরি করা
const User = mongoose.model('User', userSchema);

এখানে userSchema একটি স্কিমা যা name, age, এবং email ফিল্ডের জন্য ডেটার কাঠামো নির্ধারণ করে। তারপর User মডেল তৈরি করা হয়েছে, যা User ডকুমেন্টে CRUD অপারেশন করতে ব্যবহৃত হবে।


৪. ডেটা ইনসার্ট (Create)

Mongoose ব্যবহার করে ডেটাবেসে ডেটা ইনসার্ট করা সহজ। আপনি যে মডেল তৈরি করেছেন, তার মাধ্যমে save() ফাংশন ব্যবহার করে নতুন ডকুমেন্ট ইনসার্ট করতে পারেন।

উদাহরণ:

const newUser = new User({
  name: "John Doe",
  age: 30,
  email: "johndoe@example.com"
});

newUser.save()
  .then((user) => {
    console.log("User saved:", user);
  })
  .catch((err) => {
    console.error("Error saving user:", err);
  });

এখানে newUser.save() ব্যবহার করা হয়েছে নতুন User ডকুমেন্ট MongoDB ডেটাবেসে ইনসার্ট করতে।


৫. ডেটা খোঁজা (Read)

Mongoose তে ডেটা খোঁজা অনেক সহজ। আপনি find(), findOne() বা findById() ব্যবহার করে MongoDB ডেটাবেস থেকে ডেটা অনুসন্ধান করতে পারেন।

উদাহরণ:

  • সব ডকুমেন্ট খোঁজা:

    User.find()
      .then((users) => {
        console.log("Users:", users);
      })
      .catch((err) => {
        console.error("Error finding users:", err);
      });
    
  • একটি নির্দিষ্ট ডকুমেন্ট খোঁজা:

    User.findOne({ name: "John Doe" })
      .then((user) => {
        console.log("Found user:", user);
      })
      .catch((err) => {
        console.error("Error finding user:", err);
      });
    
  • ID দিয়ে ডকুমেন্ট খোঁজা:

    User.findById('605c72ef15320725f2b8bf1e')
      .then((user) => {
        console.log("Found user by ID:", user);
      })
      .catch((err) => {
        console.error("Error finding user by ID:", err);
      });
    

৬. ডেটা আপডেট (Update)

Mongoose তে ডেটা আপডেট করতে updateOne(), updateMany(), অথবা findOneAndUpdate() ব্যবহার করা হয়।

উদাহরণ:

  • একটি ডকুমেন্ট আপডেট করা:

    User.updateOne({ name: "John Doe" }, { $set: { age: 31 } })
      .then(() => {
        console.log("User updated!");
      })
      .catch((err) => {
        console.error("Error updating user:", err);
      });
    
  • একটি ডকুমেন্টের সম্পূর্ণ তথ্য আপডেট করা:

    User.findOneAndUpdate({ name: "John Doe" }, { name: "Jane Doe", age: 32 }, { new: true })
      .then((user) => {
        console.log("Updated user:", user);
      })
      .catch((err) => {
        console.error("Error updating user:", err);
      });
    

৭. ডেটা মুছা (Delete)

Mongoose তে ডেটা মুছে ফেলতে deleteOne(), deleteMany(), অথবা findOneAndDelete() ব্যবহার করা হয়।

উদাহরণ:

  • একটি ডকুমেন্ট মুছা:

    User.deleteOne({ name: "John Doe" })
      .then(() => {
        console.log("User deleted!");
      })
      .catch((err) => {
        console.error("Error deleting user:", err);
      });
    
  • একাধিক ডকুমেন্ট মুছা:

    User.deleteMany({ age: { $lt: 30 } })
      .then(() => {
        console.log("Users deleted!");
      })
      .catch((err) => {
        console.error("Error deleting users:", err);
      });
    

৮. মডেল ভ্যালিডেশন (Model Validation)

Mongoose তে মডেল ভ্যালিডেশন ব্যবহার করা হয় যাতে ডেটাবেসে ইনসার্ট হওয়ার আগে ডেটা সঠিকভাবে যাচাই করা যায়। এটি স্কিমাতে required, min, max, enum ইত্যাদি ভ্যালিডেশন ফিচার দ্বারা কাস্টমাইজ করা যায়।

উদাহরণ:

const userSchema = new mongoose.Schema({
  name: { type: String, required: true },
  age: { type: Number, required: true, min: 18, max: 100 },
  email: { type: String, required: true, unique: true, match: /.+\@.+\..+/ }
});

এখানে name, age, এবং email ফিল্ডের জন্য ভ্যালিডেশন শর্ত সেট করা হয়েছে।


সারাংশ

Mongoose ORM ব্যবহার করে MongoDB ডেটাবেসের সাথে সহজেই যোগাযোগ করা যায়। এটি ডেটা মডেলিং, ভ্যালিডেশন, কুয়েরি অপারেশন এবং CRUD কার্যক্রম সম্পাদন করতে সহায়তা করে। Mongoose MongoDB ডেটাবেসে ডেটার কাঠামো নির্ধারণ, ডেটা ইনসার্ট, আপডেট, খোঁজা, মুছে ফেলা, এবং শর্তাবলী বাস্তবায়ন সহজ করে তোলে।

Content added By

MongoDB এবং Express.js এর সাথে REST API তৈরি

95
95

MongoDB এবং Express.js এর সাহায্যে RESTful API তৈরি করা একটি জনপ্রিয় প্রক্রিয়া, যেটি ডেটাবেস পরিচালনা এবং ওয়েব অ্যাপ্লিকেশন তৈরির জন্য ব্যবহার করা হয়। MongoDB একটি NoSQL ডেটাবেস এবং Express.js হল Node.js এর জন্য একটি জনপ্রিয় ওয়েব অ্যাপ্লিকেশন ফ্রেমওয়ার্ক, যা REST API নির্মাণে সহজতা প্রদান করে।

এখানে MongoDB এবং Express.js ব্যবহার করে একটি REST API তৈরি করার সম্পূর্ণ গাইড দেওয়া হল।


প্রথমে প্রয়োজনীয় প্যাকেজগুলো ইনস্টল করুন

আপনার প্রকল্পে MongoDB এবং Express.js ব্যবহার করতে হলে, আপনাকে প্রথমে Node.js এবং তার প্যাকেজ ম্যানেজার npm ইনস্টল করতে হবে। এরপর, MongoDB এবং Express.js এর জন্য কিছু প্যাকেজ ইনস্টল করতে হবে।

  1. Node.js ইনস্টল করুন (যদি ইতিমধ্যে ইনস্টল না থাকে):
    Node.js ডাউনলোড পেজ থেকে Node.js ডাউনলোড করুন।
  2. npm ইনস্টলেশন (Node.js ইনস্টল করার পর স্বয়ংক্রিয়ভাবে ইনস্টল হয়)।
  3. নতুন Node.js প্রকল্প তৈরি করুন: একটি নতুন ডিরেক্টরি তৈরি করুন এবং সেখানে একটি নতুন package.json ফাইল তৈরি করুন:

    mkdir my-api
    cd my-api
    npm init -y
    
  4. Express.js, MongoDB (Mongoose), Cors ইনস্টল করুন: Express.js, Mongoose (MongoDB এর জন্য ODM), এবং Cors প্যাকেজ ইনস্টল করুন:

    npm install express mongoose cors
    

API নির্মাণের ধাপগুলো

1. Express.js সার্ভার সেটআপ

একটি server.js ফাইল তৈরি করুন এবং Express.js অ্যাপ্লিকেশন সেটআপ করুন।

const express = require('express');
const mongoose = require('mongoose');
const cors = require('cors');

// Express অ্যাপ্লিকেশন তৈরি
const app = express();
const PORT = 3000;

// Middleware সেটআপ
app.use(cors());
app.use(express.json()); // JSON বডি পার্স করতে

// MongoDB কানেকশন
mongoose.connect('mongodb://localhost:27017/mydb', { useNewUrlParser: true, useUnifiedTopology: true })
  .then(() => console.log("MongoDB Connected"))
  .catch(err => console.log(err));

// API রাউটস
app.get('/', (req, res) => {
  res.send('Hello World!');
});

// সার্ভার চালু করা
app.listen(PORT, () => {
  console.log(`Server running on port ${PORT}`);
});

এটি একটি মৌলিক Express.js সার্ভার যা MongoDB এর সাথে কানেক্ট হবে এবং HTTP GET রিকোয়েস্ট হ্যান্ডেল করবে।

2. MongoDB মডেল তৈরি করুন

MongoDB ডেটাবেসে ডেটা সংরক্ষণ করার জন্য একটি মডেল তৈরি করতে হবে। উদাহরণস্বরূপ, একটি User মডেল তৈরি করা যাক।

models/User.js ফাইল তৈরি করুন:

const mongoose = require('mongoose');

// User Schema তৈরি
const userSchema = new mongoose.Schema({
  name: { type: String, required: true },
  email: { type: String, required: true, unique: true },
  age: { type: Number, required: true }
});

// User মডেল তৈরি
const User = mongoose.model('User', userSchema);

module.exports = User;

3. CRUD অপারেশন রাউটস তৈরি করুন

এখন, আমাদের RESTful API রাউটগুলি তৈরি করতে হবে, যাতে ডেটাবেসে ডেটা CRUD (Create, Read, Update, Delete) অপারেশন করতে পারি।

routes/userRoutes.js ফাইল তৈরি করুন:

const express = require('express');
const router = express.Router();
const User = require('../models/User');

// 1. Create User (POST)
router.post('/users', async (req, res) => {
  try {
    const { name, email, age } = req.body;
    const newUser = new User({ name, email, age });
    await newUser.save();
    res.status(201).json(newUser);
  } catch (err) {
    res.status(400).json({ message: err.message });
  }
});

// 2. Get All Users (GET)
router.get('/users', async (req, res) => {
  try {
    const users = await User.find();
    res.json(users);
  } catch (err) {
    res.status(400).json({ message: err.message });
  }
});

// 3. Get a Single User by ID (GET)
router.get('/users/:id', async (req, res) => {
  try {
    const user = await User.findById(req.params.id);
    if (!user) {
      return res.status(404).json({ message: 'User not found' });
    }
    res.json(user);
  } catch (err) {
    res.status(400).json({ message: err.message });
  }
});

// 4. Update User (PUT)
router.put('/users/:id', async (req, res) => {
  try {
    const { name, email, age } = req.body;
    const updatedUser = await User.findByIdAndUpdate(
      req.params.id,
      { name, email, age },
      { new: true }
    );
    res.json(updatedUser);
  } catch (err) {
    res.status(400).json({ message: err.message });
  }
});

// 5. Delete User (DELETE)
router.delete('/users/:id', async (req, res) => {
  try {
    const deletedUser = await User.findByIdAndDelete(req.params.id);
    if (!deletedUser) {
      return res.status(404).json({ message: 'User not found' });
    }
    res.json({ message: 'User deleted' });
  } catch (err) {
    res.status(400).json({ message: err.message });
  }
});

module.exports = router;

4. রাউটগুলো Express সার্ভারে সংযুক্ত করুন

server.js ফাইলে আমরা userRoutes.js রাউটগুলো সংযুক্ত করবো।

const userRoutes = require('./routes/userRoutes');
app.use('/api', userRoutes);  // '/api' পাথে সমস্ত রাউট

5. সার্ভার চালু করুন

সবকিছু প্রস্তুত হলে, এবার সার্ভারটি চালু করুন:

node server.js

এখন, আপনার API সার্ভারটি http://localhost:3000 এ চালু হবে এবং আপনি নিম্নলিখিত API রিকোয়েস্টগুলো করতে পারবেন:

  • POST /api/users: নতুন ব্যবহারকারী তৈরি করুন।
  • GET /api/users: সমস্ত ব্যবহারকারী দেখুন।
  • GET /api/users/:id: একটি ব্যবহারকারী দেখুন তার ID এর মাধ্যমে।
  • PUT /api/users/:id: একটি ব্যবহারকারী আপডেট করুন তার ID এর মাধ্যমে।
  • DELETE /api/users/:id: একটি ব্যবহারকারী মুছুন তার ID এর মাধ্যমে।

6. Postman ব্যবহার করে পরীক্ষা করুন

Postman বা অন্য কোন HTTP ক্লায়েন্ট টুল ব্যবহার করে আপনার REST API পরীক্ষা করতে পারেন। আপনি প্রতিটি রিকোয়েস্টের মাধ্যমে ডেটাবেসের সাথে ইন্টারঅ্যাক্ট করতে পারবেন এবং ডেটার CRUD অপারেশন পরিচালনা করতে পারবেন।


সারাংশ

MongoDB এবং Express.js এর সাথে একটি RESTful API তৈরি করা খুবই সহজ এবং কার্যকরী। MongoDB ডেটাবেসের সাথে সংযোগ স্থাপন, Mongoose দিয়ে মডেল তৈরি, এবং Express.js এর মাধ্যমে HTTP রাউট এবং কুয়েরি পরিচালনা করা হয়। এই পদ্ধতির মাধ্যমে আপনি দ্রুত একটি পূর্ণাঙ্গ API তৈরি করতে পারবেন যা ডেটাবেসের সাথে ইন্টারঅ্যাক্ট করে।

Content added By

JavaScript দিয়ে CRUD Operations এবং Aggregation

155
155

MongoDB তে CRUD (Create, Read, Update, Delete) অপারেশন এবং Aggregation অপারেশন JavaScript (Node.js) ব্যবহার করে সম্পন্ন করা যায়। MongoDB এর সাথে JavaScript (Node.js) ব্যবহার করার জন্য MongoDB Node.js Driver অথবা Mongoose লাইব্রেরি ব্যবহার করা হয়।

এখানে আমরা MongoDB Node.js Driver ব্যবহার করে MongoDB তে CRUD অপারেশন এবং Aggregation অপারেশন কিভাবে করা যায় তা দেখবো।


MongoDB Node.js Driver ইনস্টলেশন

প্রথমে, MongoDB Node.js Driver ইনস্টল করতে হবে:

npm install mongodb

এটি MongoDB এর সাথে JavaScript ব্যবহার করতে সাহায্য করবে।


1. MongoDB এ Create (ডেটা তৈরি)

MongoDB তে ডেটা ইনসার্ট করতে insertOne() বা insertMany() ব্যবহার করা হয়। insertOne() একটি একক ডকুমেন্ট ইনসার্ট করে, এবং insertMany() একাধিক ডকুমেন্ট ইনসার্ট করে।

একক ডকুমেন্ট ইনসার্ট

const { MongoClient } = require("mongodb");

async function createDocument() {
  const client = new MongoClient("mongodb://localhost:27017");
  
  try {
    await client.connect();
    const db = client.db("testDB");
    const collection = db.collection("users");

    const result = await collection.insertOne({
      name: "John Doe",
      age: 30,
      email: "john.doe@example.com"
    });

    console.log("Document inserted with ID:", result.insertedId);
  } finally {
    await client.close();
  }
}

createDocument();

একাধিক ডকুমেন্ট ইনসার্ট

async function createMultipleDocuments() {
  const client = new MongoClient("mongodb://localhost:27017");

  try {
    await client.connect();
    const db = client.db("testDB");
    const collection = db.collection("users");

    const result = await collection.insertMany([
      { name: "Alice", age: 25, email: "alice@example.com" },
      { name: "Bob", age: 28, email: "bob@example.com" }
    ]);

    console.log(`${result.insertedCount} documents were inserted.`);
  } finally {
    await client.close();
  }
}

createMultipleDocuments();

2. MongoDB এ Read (ডেটা পড়া)

MongoDB তে ডেটা পড়তে find() বা findOne() ব্যবহার করা হয়। find() সাধারণত একটি বা একাধিক ডকুমেন্ট ফেরত দেয়, এবং findOne() একটি একক ডকুমেন্ট ফেরত দেয়।

একক ডকুমেন্ট পড়া

async function readDocument() {
  const client = new MongoClient("mongodb://localhost:27017");

  try {
    await client.connect();
    const db = client.db("testDB");
    const collection = db.collection("users");

    const user = await collection.findOne({ name: "John Doe" });
    console.log(user);
  } finally {
    await client.close();
  }
}

readDocument();

অনেক ডকুমেন্ট পড়া

async function readMultipleDocuments() {
  const client = new MongoClient("mongodb://localhost:27017");

  try {
    await client.connect();
    const db = client.db("testDB");
    const collection = db.collection("users");

    const users = await collection.find({}).toArray();
    console.log(users);
  } finally {
    await client.close();
  }
}

readMultipleDocuments();

3. MongoDB এ Update (ডেটা আপডেট)

MongoDB তে ডেটা আপডেট করতে updateOne() বা updateMany() ব্যবহার করা হয়। updateOne() একটি একক ডকুমেন্ট আপডেট করে, এবং updateMany() একাধিক ডকুমেন্ট আপডেট করে।

একক ডকুমেন্ট আপডেট

async function updateDocument() {
  const client = new MongoClient("mongodb://localhost:27017");

  try {
    await client.connect();
    const db = client.db("testDB");
    const collection = db.collection("users");

    const result = await collection.updateOne(
      { name: "John Doe" },
      { $set: { age: 35 } }
    );

    console.log(`${result.modifiedCount} document(s) updated.`);
  } finally {
    await client.close();
  }
}

updateDocument();

অনেক ডকুমেন্ট আপডেট

async function updateMultipleDocuments() {
  const client = new MongoClient("mongodb://localhost:27017");

  try {
    await client.connect();
    const db = client.db("testDB");
    const collection = db.collection("users");

    const result = await collection.updateMany(
      { age: { $gte: 30 } },
      { $set: { status: "Senior" } }
    );

    console.log(`${result.modifiedCount} document(s) updated.`);
  } finally {
    await client.close();
  }
}

updateMultipleDocuments();

4. MongoDB এ Delete (ডেটা মুছা)

MongoDB তে ডেটা মুছতে deleteOne() বা deleteMany() ব্যবহার করা হয়। deleteOne() একটি একক ডকুমেন্ট মুছে ফেলে, এবং deleteMany() একাধিক ডকুমেন্ট মুছে ফেলে।

একক ডকুমেন্ট মুছা

async function deleteDocument() {
  const client = new MongoClient("mongodb://localhost:27017");

  try {
    await client.connect();
    const db = client.db("testDB");
    const collection = db.collection("users");

    const result = await collection.deleteOne({ name: "John Doe" });
    console.log(`${result.deletedCount} document(s) deleted.`);
  } finally {
    await client.close();
  }
}

deleteDocument();

অনেক ডকুমেন্ট মুছা

async function deleteMultipleDocuments() {
  const client = new MongoClient("mongodb://localhost:27017");

  try {
    await client.connect();
    const db = client.db("testDB");
    const collection = db.collection("users");

    const result = await collection.deleteMany({ age: { $lt: 30 } });
    console.log(`${result.deletedCount} document(s) deleted.`);
  } finally {
    await client.close();
  }
}

deleteMultipleDocuments();

5. Aggregation (অ্যাগ্রিগেশন)

MongoDB তে অ্যাগ্রিগেশন অপারেশনগুলি ডেটার উপর জটিল বিশ্লেষণ করতে ব্যবহৃত হয়। অ্যাগ্রিগেশন পাইপলাইন ব্যবহার করে বিভিন্ন স্টেজে ডেটা প্রসেস করা হয়, যেমন গ্রুপিং, সোর্টিং, ফিল্টারিং ইত্যাদি।

অ্যাগ্রিগেশন পাইপলাইন উদাহরণ

async function aggregationExample() {
  const client = new MongoClient("mongodb://localhost:27017");

  try {
    await client.connect();
    const db = client.db("testDB");
    const collection = db.collection("users");

    const pipeline = [
      { $match: { age: { $gte: 30 } } },
      { $group: { _id: "$status", total: { $sum: 1 } } },
      { $sort: { total: -1 } }
    ];

    const result = await collection.aggregate(pipeline).toArray();
    console.log(result);
  } finally {
    await client.close();
  }
}

aggregationExample();

এই উদাহরণে:

  1. $match: age ৩০ এর বেশি ডকুমেন্ট গুলো ফিল্টার করা হয়েছে।
  2. $group: status অনুযায়ী গ্রুপ করা হয়েছে এবং প্রতিটি গ্রুপের জন্য মোট ডকুমেন্ট সংখ্যা গণনা করা হয়েছে।
  3. $sort: মোট ডকুমেন্ট সংখ্যা অনুযায়ী সোর্ট করা হয়েছে।

সারাংশ

MongoDB তে CRUD (Create, Read, Update, Delete) অপারেশন এবং Aggregation অপারেশন JavaScript (Node.js) ব্যবহার করে খুব সহজেই করা যায়। MongoDB Node.js Driver ব্যবহার করে আপনি ডেটাবেসে ডেটা ইনসার্ট, আপডেট, পড়া এবং মুছতে পারবেন। অ্যাগ্রিগেশন পাইপলাইন ব্যবহার করে ডেটার উপর জটিল বিশ্লেষণ করতে এবং গ্রুপিং, সোর্টিং, ফিল্টারিং করতে পারবেন।

Content added By
Promotion